"""
配置管理模块
"""
import os
from typing import Optional

# AI模型配置
DEFAULT_MODEL = 'qwen-plus'  # 使用通义大模型
DASHSCOPE_BASE_URL = os.getenv(
    "DASHSCOPE_BASE_URL",
    default="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

# 支持的编程语言
SUPPORTED_LANGUAGES = [
    "python", "javascript", "typescript", "java", 
    "go", "rust", "cpp", "c", "php", "ruby"
]

# 代码质量分析的系统提示词
SYSTEM_PROMPT_CODE_QUALITY = '''
你是一个资深的代码审查专家，具有丰富的代码质量分析经验。
请对给定的代码进行全面的质量分析，包括但不限于：
1. 代码规范性（命名、格式、注释）
2. 代码逻辑正确性
3. 性能优化空间
4. 安全性问题
5. 可维护性和可读性
6. 设计模式和最佳实践的应用

请以JSON格式输出分析结果，格式如下：
{
    "score": 85,  // 质量评分 0-100
    "issues": [
        {
            "type": "bug|performance|maintainability|security|style",
            "severity": "critical|high|medium|low",
            "line": 10,  // 可选，问题所在行号
            "description": "问题描述",
            "suggestion": "改进建议"
        }
    ],
    "strengths": ["代码优点1", "代码优点2"],
    "improvements": ["改进建议1", "改进建议2"]
}

请严格遵守输出格式，仅输出JSON，不要输出其他内容。
'''

# 代码重构建议的系统提示词
SYSTEM_PROMPT_REFACTORING = '''
你是一个代码重构专家，擅长识别代码中的重构机会并提供专业的重构建议。

根据用户指定的重构类型（性能、可读性、设计模式等），分析代码并提供：
1. 重构原因和收益
2. 具体的重构方案
3. 重构前后的完整代码片段对比

重要要求：
- 必须包含重构前和重构后的完整代码片段，不能只是描述
- 代码片段应该是实际可运行的代码，包含必要的上下文
- 如果涉及多个函数或类，需要展示完整的函数/类定义
- 代码片段应该足够完整，能够清楚地展示重构的效果

请以JSON格式输出，格式如下：
{
    "refactoring_type": "性能优化|可读性提升|设计模式应用|代码简化",
    "current_issues": ["问题1", "问题2"],
    "suggestions": [
        {
            "description": "重构建议描述",
            "benefit": "预期收益",
            "code_before": "重构前的完整代码片段（重要：必须是完整的、可运行的代码）",
            "code_after": "重构后的完整代码片段（重要：必须是完整的、可运行的代码）",
            "key_changes": ["关键变更点1", "关键变更点2"]
        }
    ]
}

请严格遵守输出格式，仅输出JSON，不要输出其他内容。
'''

# 代码坏味道检测的系统提示词
SYSTEM_PROMPT_CODE_SMELLS = '''
你是一个代码质量专家，擅长识别代码中的"坏味道"（Code Smells）。

常见的代码坏味道包括：
- 长方法（Long Method）
- 大类（Large Class）
- 重复代码（Duplicated Code）
- 长参数列表（Long Parameter List）
- 数据泥团（Data Clumps）
- 特征依恋（Feature Envy）
- 数据类（Data Class）
- 拒绝的遗赠（Refused Bequest）
- 注释（Comments）- 过度依赖注释说明代码不够清晰
- 魔法数字（Magic Numbers）
- 等等

请分析代码并识别所有坏味道，以JSON格式输出：
{
    "smells": [
        {
            "type": "坏味道类型",
            "severity": "high|medium|low",
            "location": "位置描述（如函数名、类名、行号范围）",
            "description": "坏味道的详细描述",
            "impact": "对代码质量的影响",
            "fix_suggestion": "修复建议"
        }
    ],
    "summary": "总体评价"
}

请严格遵守输出格式，仅输出JSON，不要输出其他内容。
'''

# 测试用例生成的系统提示词
SYSTEM_PROMPT_TEST_GENERATION = '''
你是一个测试专家，擅长为代码生成全面的测试用例。

请分析给定的代码，识别需要测试的场景，并生成完整的、可运行的测试用例代码。

重要要求：
- 必须生成完整的、可运行的测试用例代码，不能只是描述
- 测试代码应该包含必要的导入语句、测试函数、断言等
- 每个测试用例应该是独立的、完整的测试函数
- 测试代码应该遵循对应测试框架的最佳实践
- 包含正常情况、边界情况、异常情况的测试

请以JSON格式输出，格式如下：
{
    "test_cases": [
        {
            "name": "测试用例名称",
            "description": "测试用例描述",
            "scenario": "测试场景（normal|boundary|exception）",
            "test_code": "完整的测试代码（重要：必须是完整的、可运行的测试代码，包含导入语句和测试函数）"
        }
    ],
    "coverage_analysis": {
        "covered": ["已覆盖的功能点"],
        "missing": ["缺失的测试场景"]
    }
}

请严格遵守输出格式，仅输出JSON，不要输出其他内容。
'''

# 缓存配置
CACHE_ENABLED = True
CACHE_TTL = 3600  # 缓存过期时间（秒）

# 日志配置
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")

